package com.southwind.fisco;

import java.math.BigInteger;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import org.fisco.bcos.sdk.abi.FunctionReturnDecoder;
import org.fisco.bcos.sdk.abi.TypeReference;
import org.fisco.bcos.sdk.abi.datatypes.DynamicArray;
import org.fisco.bcos.sdk.abi.datatypes.Event;
import org.fisco.bcos.sdk.abi.datatypes.Function;
import org.fisco.bcos.sdk.abi.datatypes.Type;
import org.fisco.bcos.sdk.abi.datatypes.Utf8String;
import org.fisco.bcos.sdk.abi.datatypes.generated.Int256;
import org.fisco.bcos.sdk.abi.datatypes.generated.Uint256;
import org.fisco.bcos.sdk.abi.datatypes.generated.tuples.generated.Tuple1;
import org.fisco.bcos.sdk.abi.datatypes.generated.tuples.generated.Tuple2;
import org.fisco.bcos.sdk.abi.datatypes.generated.tuples.generated.Tuple4;
import org.fisco.bcos.sdk.abi.datatypes.generated.tuples.generated.Tuple6;
import org.fisco.bcos.sdk.client.Client;
import org.fisco.bcos.sdk.contract.Contract;
import org.fisco.bcos.sdk.crypto.CryptoSuite;
import org.fisco.bcos.sdk.crypto.keypair.CryptoKeyPair;
import org.fisco.bcos.sdk.eventsub.EventCallback;
import org.fisco.bcos.sdk.model.CryptoType;
import org.fisco.bcos.sdk.model.TransactionReceipt;
import org.fisco.bcos.sdk.model.callback.TransactionCallback;
import org.fisco.bcos.sdk.transaction.model.exception.ContractException;

@SuppressWarnings("unchecked")
public class Record extends Contract {
    public static final String[] BINARY_ARRAY = {"60806040523480156200001157600080fd5b506110016000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166356004b6a6040805190810160405280600d81526020017f745f646f726d5f7265636f7264000000000000000000000000000000000000008152506040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040162000101919062000296565b602060405180830381600087803b1580156200011c57600080fd5b505af115801562000131573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525062000157919081019062000174565b5062000340565b60006200016c8251620002ef565b905092915050565b6000602082840312156200018757600080fd5b600062000197848285016200015e565b91505092915050565b6000620001ad82620002e4565b808452620001c3816020860160208601620002f9565b620001ce816200032f565b602085010191505092915050565b6000600a82527f73747564656e745f6964000000000000000000000000000000000000000000006020830152604082019050919050565b6000604e82527f6e616d652c73747564656e745f6e756d6265722c646f726d69746f72795f696460208301527f2c636865636b5f696e5f74696d652c636865636b5f6f75745f74696d652c636860408301527f65636b5f6f75745f726561736f6e0000000000000000000000000000000000006060830152608082019050919050565b60006060820190508181036000830152620002b28184620001a0565b90508181036020830152620002c781620001dc565b90508181036040830152620002dc8162000213565b905092915050565b600081519050919050565b6000819050919050565b60005b8381101562000319578082015181840152602081019050620002fc565b8381111562000329576000848401525b50505050565b6000601f19601f8301169050919050565b612f9480620003506000396000f300608060405260043610610062576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806370a3412a1461006757806378d573a2146100a457806386e80b71146100e6578063f78ebf3e14610128575b600080fd5b34801561007357600080fd5b5061008e6004803603610089919081019061251c565b610165565b60405161009b919061297b565b60405180910390f35b3480156100b057600080fd5b506100cb60048036036100c6919081019061242e565b6107a8565b6040516100dd969594939291906128f0565b60405180910390f35b3480156100f257600080fd5b5061010d6004803603610108919081019061242e565b61115a565b60405161011f96959493929190612abd565b60405180910390f35b34801561013457600080fd5b5061014f600480360361014a91908101906124b0565b611a0d565b60405161015c919061297b565b60405180910390f35b6000806000806000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f23f63c96040805190810160405280600d81526020017f745f646f726d5f7265636f7264000000000000000000000000000000000000008152506040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040161021691906129b1565b602060405180830381600087803b15801561023057600080fd5b505af1158015610244573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061026891908101906123dc565b92508273ffffffffffffffffffffffffffffffffffffffff166313db93466040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b1580156102ce57600080fd5b505af11580156102e2573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061030691908101906123b3565b91508173ffffffffffffffffffffffffffffffffffffffff1663e942b516896040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040161035d9190612b8f565b600060405180830381600087803b15801561037757600080fd5b505af115801561038b573d6000803e3d6000fd5b505050508173ffffffffffffffffffffffffffffffffffffffff1663e942b516886040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004016103e49190612b5a565b600060405180830381600087803b1580156103fe57600080fd5b505af1158015610412573d6000803e3d6000fd5b505050508173ffffffffffffffffffffffffffffffffffffffff1663e942b516876040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040161046b9190612d5d565b600060405180830381600087803b15801561048557600080fd5b505af1158015610499573d6000803e3d6000fd5b505050508173ffffffffffffffffffffffffffffffffffffffff1663e942b516866040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004016104f29190612cba565b600060405180830381600087803b15801561050c57600080fd5b505af1158015610520573d6000803e3d6000fd5b505050508173ffffffffffffffffffffffffffffffffffffffff16632ef8ba74426040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004016105799190612d0f565b600060405180830381600087803b15801561059357600080fd5b505af11580156105a7573d6000803e3d6000fd5b505050508173ffffffffffffffffffffffffffffffffffffffff16632ef8ba7460006040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004016106019190612c6c565b600060405180830381600087803b15801561061b57600080fd5b505af115801561062f573d6000803e3d6000fd5b505050508173ffffffffffffffffffffffffffffffffffffffff1663e942b5166040518163ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040161068690612c19565b600060405180830381600087803b1580156106a057600080fd5b505af11580156106b4573d6000803e3d6000fd5b505050508273ffffffffffffffffffffffffffffffffffffffff166331afac3689846040518363ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040161070f929190612a03565b602060405180830381600087803b15801561072957600080fd5b505af115801561073d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506107619190810190612405565b90507fc57b01fa77f41df77eaab79a0e2623fab2e7ae3e9530d9b1cab225ad65f2b7ce81604051610792919061297b565b60405180910390a1809350505050949350505050565b6060806060806060806000806000806000806000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f23f63c96040805190810160405280600d81526020017f745f646f726d5f7265636f7264000000000000000000000000000000000000008152506040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040161086591906129b1565b602060405180830381600087803b15801561087f57600080fd5b505af1158015610893573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506108b791908101906123dc565b95508573ffffffffffffffffffffffffffffffffffffffff16637857d7c96040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b15801561091d57600080fd5b505af1158015610931573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506109559190810190612361565b94508573ffffffffffffffffffffffffffffffffffffffff1663e8434e398e876040518363ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004016109ae9291906129d3565b602060405180830381600087803b1580156109c857600080fd5b505af11580156109dc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610a00919081019061238a565b93508373ffffffffffffffffffffffffffffffffffffffff1663949d225d6040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b158015610a6657600080fd5b505af1158015610a7a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610a9e9190810190612405565b925082604051908082528060200260200182016040528015610ad457816020015b6060815260200190600190039081610abf5790505b509b5082604051908082528060200260200182016040528015610b0b57816020015b6060815260200190600190039081610af65790505b509a5082604051908082528060200260200182016040528015610b4257816020015b6060815260200190600190039081610b2d5790505b50995082604051908082528060200260200182016040528015610b745781602001602082028038833980820191505090505b50985082604051908082528060200260200182016040528015610ba65781602001602082028038833980820191505090505b50975082604051908082528060200260200182016040528015610bdd57816020015b6060815260200190600190039081610bc85790505b509650600091505b82821015611139578373ffffffffffffffffffffffffffffffffffffffff1663846719e0836040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401610c42919061297b565b602060405180830381600087803b158015610c5c57600080fd5b505af1158015610c70573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610c9491908101906123b3565b90508073ffffffffffffffffffffffffffffffffffffffff16639c","981fcb6040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401610ce990612b3a565b600060405180830381600087803b158015610d0357600080fd5b505af1158015610d17573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250610d40919081019061246f565b8c83815181101515610d4e57fe5b906020019060200201819052508073ffffffffffffffffffffffffffffffffffffffff16639c981fcb6040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401610dae90612d3d565b600060405180830381600087803b158015610dc857600080fd5b505af1158015610ddc573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250610e05919081019061246f565b8b83815181101515610e1357fe5b906020019060200201819052508073ffffffffffffffffffffffffffffffffffffffff16639c981fcb6040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401610e7390612c9a565b600060405180830381600087803b158015610e8d57600080fd5b505af1158015610ea1573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250610eca919081019061246f565b8a83815181101515610ed857fe5b906020019060200201819052508073ffffffffffffffffffffffffffffffffffffffff1663fda69fae6040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401610f3890612cef565b602060405180830381600087803b158015610f5257600080fd5b505af1158015610f66573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610f8a9190810190612405565b8983815181101515610f9857fe5b90602001906020020181815250508073ffffffffffffffffffffffffffffffffffffffff1663fda69fae6040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401610ff990612c4c565b602060405180830381600087803b15801561101357600080fd5b505af1158015611027573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061104b9190810190612405565b888381518110151561105957fe5b90602001906020020181815250508073ffffffffffffffffffffffffffffffffffffffff16639c981fcb6040518163ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004016110ba90612bc4565b600060405180830381600087803b1580156110d457600080fd5b505af11580156110e8573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250611111919081019061246f565b878381518110151561111f57fe5b906020019060200201819052508180600101925050610be5565b8b8b8b8b8b8b9b509b509b509b509b509b5050505050505091939550919395565b606080606060008060606000806000806000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f23f63c96040805190810160405280600d81526020017f745f646f726d5f7265636f7264000000000000000000000000000000000000008152506040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040161121591906129b1565b602060405180830381600087803b15801561122f57600080fd5b505af1158015611243573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061126791908101906123dc565b93508373ffffffffffffffffffffffffffffffffffffffff16637857d7c96040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b1580156112cd57600080fd5b505af11580156112e1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506113059190810190612361565b92508373ffffffffffffffffffffffffffffffffffffffff1663e8434e398c856040518363ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040161135e9291906129d3565b602060405180830381600087803b15801561137857600080fd5b505af115801561138c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506113b0919081019061238a565b915060008273ffffffffffffffffffffffffffffffffffffffff1663949d225d6040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b15801561141857600080fd5b505af115801561142c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506114509190810190612405565b14156114ba576000806020604051908101604052806000815250919060206040519081016040528060008152509190602060405190810160405280600081525091908191508090506020604051908101604052806000815250995099509950995099509950611a00565b8173ffffffffffffffffffffffffffffffffffffffff1663846719e060018473ffffffffffffffffffffffffffffffffffffffff1663949d225d6040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b15801561153c57600080fd5b505af1158015611550573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506115749190810190612405565b036040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004016115ad919061297b565b602060405180830381600087803b1580156115c757600080fd5b505af11580156115db573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506115ff91908101906123b3565b90508073ffffffffffffffffffffffffffffffffffffffff16639c981fcb6040518163ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040161165490612b3a565b600060405180830381600087803b15801561166e57600080fd5b505af1158015611682573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052506116ab919081019061246f565b8173ffffffffffffffffffffffffffffffffffffffff16639c981fcb6040518163ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004016116fe90612d3d565b600060405180830381600087803b15801561171857600080fd5b505af115801561172c573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250611755919081019061246f565b8273ffffffffffffffffffffffffffffffffffffffff16639c981fcb6040518163ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004016117a890612c9a565b600060405180830381600087803b1580156117c257600080fd5b505af11580156117d6573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052506117ff919081019061246f565b8373ffffffffffffffffffffffffffffffffffffffff1663fda69fae6040518163ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040161185290612cef565b602060405180830381600087803b15801561186c57600080fd5b505af1158015611880573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506118a49190810190612405565b8473ffffffffffffffffffffffffffffffffffffffff1663fda69fae6040518163ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004016118f790612c4c565b602060405180830381600087803b15801561191157600080fd5b505af1158015611925573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506119499190810190612405565b8573ffffffffffffffffffffffffffffffffffffffff16639c981fcb6040518163ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040161199c90612bc4565b600060405180830381600087803b1580156119b657600080fd5b505af11580156119ca573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052506119f3919081019061246f565b9950995099509950995099505b5050505091939550919395565b600080600080600080600060606000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f23f63c96040805190810160405280600d81526020017f745f646f726d5f7265636f7264000000000000000000000000000000000000008152506040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401611ac591906129b1565b602060405180830381600087803b158015611adf57600080fd5b505af1158015611af3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611b1791908101906123dc565b96508673ffffffffffffffffffffffffffffffffffffffff16637857d7c96040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b158015611b7d57600080fd5b505af1158015611b91573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611bb59190810190612361565b95508573ffffffffffffffffffffffffffffffffffffffff1663cd30a1d18b6040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401611c0c9190612b8f565b600060405180830381600087803b158015611c2657600080fd5b505af1158015611c3a573d6000803e3d6000fd5b505050508573ffffffffffffffffffffffffffffffffffffffff1663e44594b960006040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401611c949190612c6c565b600060405180830381600087803b158015611cae57600080fd5b50","5af1158015611cc2573d6000803e3d6000fd5b505050508673ffffffffffffffffffffffffffffffffffffffff166313db93466040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b158015611d2a57600080fd5b505af1158015611d3e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611d6291908101906123b3565b94508473ffffffffffffffffffffffffffffffffffffffff16632ef8ba74426040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401611db99190612c6c565b600060405180830381600087803b158015611dd357600080fd5b505af1158015611de7573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff1663e942b5168a6040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401611e409190612be4565b600060405180830381600087803b158015611e5a57600080fd5b505af1158015611e6e573d6000803e3d6000fd5b505050508673ffffffffffffffffffffffffffffffffffffffff1663bf2b70a18b87896040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401611ecb93929190612a33565b602060405180830381600087803b158015611ee557600080fd5b505af1158015611ef9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611f1d9190810190612405565b9350600084131561220a578673ffffffffffffffffffffffffffffffffffffffff1663e8434e398b886040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401611f7f9291906129d3565b602060405180830381600087803b158015611f9957600080fd5b505af1158015611fad573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611fd1919081019061238a565b925060008373ffffffffffffffffffffffffffffffffffffffff1663949d225d6040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b15801561203957600080fd5b505af115801561204d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506120719190810190612405565b1315612209578273ffffffffffffffffffffffffffffffffffffffff1663846719e060006040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004016120cd9190612996565b602060405180830381600087803b1580156120e757600080fd5b505af11580156120fb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061211f91908101906123b3565b91508173ffffffffffffffffffffffffffffffffffffffff16639c981fcb6040518163ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040161217490612c9a565b600060405180830381600087803b15801561218e57600080fd5b505af11580156121a2573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052506121cb919081019061246f565b90507fd574238128cc2b637ff624cb1df6b5dc20292e0f94fc8984b3bffdec07f404f98a828b60405161220093929190612a71565b60405180910390a15b5b7f8e5890af40fc24a059396aca2f83d6ce41fcef086876548fa4fb8ec27e9d292a84604051612239919061297b565b60405180910390a18397505050505050505092915050565b600061225d8251612e7f565b905092915050565b60006122718251612e91565b905092915050565b60006122858251612ea3565b905092915050565b60006122998251612eb5565b905092915050565b60006122ad8251612ec7565b905092915050565b600082601f83011215156122c857600080fd5b81356122db6122d682612dbf565b612d92565b915080825260208301602083018583830111156122f757600080fd5b612302838284612f07565b50505092915050565b600082601f830112151561231e57600080fd5b815161233161232c82612dbf565b612d92565b9150808252602083016020830185838301111561234d57600080fd5b612358838284612f16565b50505092915050565b60006020828403121561237357600080fd5b600061238184828501612251565b91505092915050565b60006020828403121561239c57600080fd5b60006123aa84828501612265565b91505092915050565b6000602082840312156123c557600080fd5b60006123d384828501612279565b91505092915050565b6000602082840312156123ee57600080fd5b60006123fc8482850161228d565b91505092915050565b60006020828403121561241757600080fd5b6000612425848285016122a1565b91505092915050565b60006020828403121561244057600080fd5b600082013567ffffffffffffffff81111561245a57600080fd5b612466848285016122b5565b91505092915050565b60006020828403121561248157600080fd5b600082015167ffffffffffffffff81111561249b57600080fd5b6124a78482850161230b565b91505092915050565b600080604083850312156124c357600080fd5b600083013567ffffffffffffffff8111156124dd57600080fd5b6124e9858286016122b5565b925050602083013567ffffffffffffffff81111561250657600080fd5b612512858286016122b5565b9150509250929050565b6000806000806080858703121561253257600080fd5b600085013567ffffffffffffffff81111561254c57600080fd5b612558878288016122b5565b945050602085013567ffffffffffffffff81111561257557600080fd5b612581878288016122b5565b935050604085013567ffffffffffffffff81111561259e57600080fd5b6125aa878288016122b5565b925050606085013567ffffffffffffffff8111156125c757600080fd5b6125d3878288016122b5565b91505092959194509250565b60006125ea82612e05565b8084526020840193508360208202850161260385612deb565b60005b8481101561263c57838303885261261e83835161271a565b925061262982612e31565b9150602088019750600181019050612606565b508196508694505050505092915050565b600061265882612e10565b80845260208401935061266a83612df8565b60005b8281101561269c576126808683516128e1565b61268982612e3e565b915060208601955060018101905061266d565b50849250505092915050565b6126b181612ed1565b82525050565b6126c081612ee3565b82525050565b6126cf81612e6b565b82525050565b6126de81612ef5565b82525050565b60006126ef82612e26565b808452612703816020860160208601612f16565b61270c81612f49565b602085010191505092915050565b600061272582612e1b565b808452612739816020860160208601612f16565b61274281612f49565b602085010191505092915050565b6000600482527f6e616d65000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000600a82527f73747564656e745f6964000000000000000000000000000000000000000000006020830152604082019050919050565b6000601082527f636865636b5f6f75745f726561736f6e000000000000000000000000000000006020830152604082019050919050565b6000600e82527f636865636b5f6f75745f74696d650000000000000000000000000000000000006020830152604082019050919050565b6000600c82527f646f726d69746f72795f696400000000000000000000000000000000000000006020830152604082019050919050565b6000600d82527f636865636b5f696e5f74696d65000000000000000000000000000000000000006020830152604082019050919050565b6000808252602082019050919050565b6000600e82527f73747564656e745f6e756d6265720000000000000000000000000000000000006020830152604082019050919050565b6128ea81612e75565b82525050565b600060c082019050818103600083015261290a81896125df565b9050818103602083015261291e81886125df565b9050818103604083015261293281876125df565b90508181036060830152612946818661264d565b9050818103608083015261295a818561264d565b905081810360a083015261296e81846125df565b9050979650505050505050565b600060208201905061299060008301846126c6565b92915050565b60006020820190506129ab60008301846126d5565b92915050565b600060208201905081810360008301526129cb818461271a565b905092915050565b600060408201905081810360008301526129ed81856126e4565b90506129fc60208301846126a8565b9392505050565b60006040820190508181036000830152612a1d81856126e4565b9050612a2c60208301846126b7565b9392505050565b60006060820190508181036000830152612a4d81866126e4565b9050612a5c60208301856126b7565b612a6960408301846126a8565b949350505050565b60006060820190508181036000830152612a8b81866126e4565b90508181036020830152612a9f81856126e4565b90508181036040830152612ab381846126e4565b9050949350505050565b600060c0820190508181036000830152612ad781896126e4565b90508181036020830152612aeb81886126e4565b90508181036040830152612aff81876126e4565b9050612b0e60608301866128e1565b612b1b60808301856128e1565b81810360a0830152612b2d81846126e4565b9050979650505050505050565b60006020820190508181036000830152612b5381612750565b9050919050565b60006040820190508181036000830152612b7381612750565b90508181036020830152612b8781846126e4565b905092915050565b60006040820190508181036000830152612ba881612787565b90508181036020830152612bbc81846126e4565b905092915050565b60006020820190508181036000830152612bdd816127be565b9050919050565b60006040820190508181036000830152612bfd816127be565b90508181036020830152612c1181846126e4565b905092915050565b60006040820190508181036000830152612c32816127be565b90508181036020830152612c458161289a565b9050919050565b60006020820190508181036000830152612c65816127f5565b9050919050565b60006040820190508181036000830152612c85816127f5565b9050612c9460208301846126c6565b92915050565b60006020820190508181036000830152612cb38161","282c565b9050919050565b60006040820190508181036000830152612cd38161282c565b90508181036020830152612ce781846126e4565b905092915050565b60006020820190508181036000830152612d0881612863565b9050919050565b60006040820190508181036000830152612d2881612863565b9050612d3760208301846126c6565b92915050565b60006020820190508181036000830152612d56816128aa565b9050919050565b60006040820190508181036000830152612d76816128aa565b90508181036020830152612d8a81846126e4565b905092915050565b6000604051905081810181811067ffffffffffffffff82111715612db557600080fd5b8060405250919050565b600067ffffffffffffffff821115612dd657600080fd5b601f19601f8301169050602081019050919050565b6000602082019050919050565b6000602082019050919050565b600081519050919050565b600081519050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b6000602082019050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b6000819050919050565b6000612e8a82612e4b565b9050919050565b6000612e9c82612e4b565b9050919050565b6000612eae82612e4b565b9050919050565b6000612ec082612e4b565b9050919050565b6000819050919050565b6000612edc82612e4b565b9050919050565b6000612eee82612e4b565b9050919050565b6000612f0082612e6b565b9050919050565b82818337600083830152505050565b60005b83811015612f34578082015181840152602081019050612f19565b83811115612f43576000848401525b50505050565b6000601f19601f83011690509190505600a265627a7a72305820b323027526b75bbbeb534fd0616f1fcab9aac42f8c6e8b3ac56fed20f4a6ebe46c6578706572696d656e74616cf50037"};

    public static final String BINARY = org.fisco.bcos.sdk.utils.StringUtils.joinAll("", BINARY_ARRAY);

    public static final String[] SM_BINARY_ARRAY = {};

    public static final String SM_BINARY = org.fisco.bcos.sdk.utils.StringUtils.joinAll("", SM_BINARY_ARRAY);

    public static final String[] ABI_ARRAY = {"[{\"constant\":false,\"inputs\":[{\"name\":\"studentId\",\"type\":\"string\"},{\"name\":\"name\",\"type\":\"string\"},{\"name\":\"studentNumber\",\"type\":\"string\"},{\"name\":\"dormitoryId\",\"type\":\"string\"}],\"name\":\"checkIn\",\"outputs\":[{\"name\":\"\",\"type\":\"int256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"studentId\",\"type\":\"string\"}],\"name\":\"getAllRecords\",\"outputs\":[{\"name\":\"names\",\"type\":\"string[]\"},{\"name\":\"studentNumbers\",\"type\":\"string[]\"},{\"name\":\"dormitoryIds\",\"type\":\"string[]\"},{\"name\":\"checkInTimes\",\"type\":\"uint256[]\"},{\"name\":\"checkOutTimes\",\"type\":\"uint256[]\"},{\"name\":\"checkOutReasons\",\"type\":\"string[]\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"studentId\",\"type\":\"string\"}],\"name\":\"getRecords\",\"outputs\":[{\"name\":\"name\",\"type\":\"string\"},{\"name\":\"studentNumber\",\"type\":\"string\"},{\"name\":\"dormitoryId\",\"type\":\"string\"},{\"name\":\"checkInTime\",\"type\":\"uint256\"},{\"name\":\"checkOutTime\",\"type\":\"uint256\"},{\"name\":\"checkOutReason\",\"type\":\"string\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"studentId\",\"type\":\"string\"},{\"name\":\"reason\",\"type\":\"string\"}],\"name\":\"checkOut\",\"outputs\":[{\"name\":\"\",\"type\":\"int256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"name\":\"count\",\"type\":\"int256\"}],\"name\":\"CreateResult\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"name\":\"count\",\"type\":\"int256\"}],\"name\":\"InsertResult\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"name\":\"count\",\"type\":\"int256\"}],\"name\":\"UpdateResult\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"name\":\"count\",\"type\":\"int256\"}],\"name\":\"RemoveResult\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"name\":\"studentId\",\"type\":\"string\"},{\"indexed\":false,\"name\":\"dormitoryId\",\"type\":\"string\"},{\"indexed\":false,\"name\":\"reason\",\"type\":\"string\"}],\"name\":\"CheckOutEvent\",\"type\":\"event\"}]"};

    public static final String ABI = org.fisco.bcos.sdk.utils.StringUtils.joinAll("", ABI_ARRAY);

    public static final String FUNC_CHECKIN = "checkIn";

    public static final String FUNC_GETALLRECORDS = "getAllRecords";

    public static final String FUNC_GETRECORDS = "getRecords";

    public static final String FUNC_CHECKOUT = "checkOut";

    public static final Event CREATERESULT_EVENT = new Event("CreateResult", 
            Arrays.<TypeReference<?>>asList(new TypeReference<Int256>() {}));
    ;

    public static final Event INSERTRESULT_EVENT = new Event("InsertResult", 
            Arrays.<TypeReference<?>>asList(new TypeReference<Int256>() {}));
    ;

    public static final Event UPDATERESULT_EVENT = new Event("UpdateResult", 
            Arrays.<TypeReference<?>>asList(new TypeReference<Int256>() {}));
    ;

    public static final Event REMOVERESULT_EVENT = new Event("RemoveResult", 
            Arrays.<TypeReference<?>>asList(new TypeReference<Int256>() {}));
    ;

    public static final Event CHECKOUTEVENT_EVENT = new Event("CheckOutEvent", 
            Arrays.<TypeReference<?>>asList(new TypeReference<Utf8String>() {}, new TypeReference<Utf8String>() {}, new TypeReference<Utf8String>() {}));
    ;

    protected Record(String contractAddress, Client client, CryptoKeyPair credential) {
        super(getBinary(client.getCryptoSuite()), contractAddress, client, credential);
    }

    public static String getBinary(CryptoSuite cryptoSuite) {
        return (cryptoSuite.getCryptoTypeConfig() == CryptoType.ECDSA_TYPE ? BINARY : SM_BINARY);
    }

    public TransactionReceipt checkIn(String studentId, String name, String studentNumber, String dormitoryId) {
        final Function function = new Function(
                FUNC_CHECKIN, 
                Arrays.<Type>asList(new org.fisco.bcos.sdk.abi.datatypes.Utf8String(studentId), 
                new org.fisco.bcos.sdk.abi.datatypes.Utf8String(name), 
                new org.fisco.bcos.sdk.abi.datatypes.Utf8String(studentNumber), 
                new org.fisco.bcos.sdk.abi.datatypes.Utf8String(dormitoryId)), 
                Collections.<TypeReference<?>>emptyList());
        return executeTransaction(function);
    }

    public byte[] checkIn(String studentId, String name, String studentNumber, String dormitoryId, TransactionCallback callback) {
        final Function function = new Function(
                FUNC_CHECKIN, 
                Arrays.<Type>asList(new org.fisco.bcos.sdk.abi.datatypes.Utf8String(studentId), 
                new org.fisco.bcos.sdk.abi.datatypes.Utf8String(name), 
                new org.fisco.bcos.sdk.abi.datatypes.Utf8String(studentNumber), 
                new org.fisco.bcos.sdk.abi.datatypes.Utf8String(dormitoryId)), 
                Collections.<TypeReference<?>>emptyList());
        return asyncExecuteTransaction(function, callback);
    }

    public String getSignedTransactionForCheckIn(String studentId, String name, String studentNumber, String dormitoryId) {
        final Function function = new Function(
                FUNC_CHECKIN, 
                Arrays.<Type>asList(new org.fisco.bcos.sdk.abi.datatypes.Utf8String(studentId), 
                new org.fisco.bcos.sdk.abi.datatypes.Utf8String(name), 
                new org.fisco.bcos.sdk.abi.datatypes.Utf8String(studentNumber), 
                new org.fisco.bcos.sdk.abi.datatypes.Utf8String(dormitoryId)), 
                Collections.<TypeReference<?>>emptyList());
        return createSignedTransaction(function);
    }

    public Tuple4<String, String, String, String> getCheckInInput(TransactionReceipt transactionReceipt) {
        String data = transactionReceipt.getInput().substring(10);
        final Function function = new Function(FUNC_CHECKIN, 
                Arrays.<Type>asList(), 
                Arrays.<TypeReference<?>>asList(new TypeReference<Utf8String>() {}, new TypeReference<Utf8String>() {}, new TypeReference<Utf8String>() {}, new TypeReference<Utf8String>() {}));
        List<Type> results = FunctionReturnDecoder.decode(data, function.getOutputParameters());
        return new Tuple4<String, String, String, String>(

                (String) results.get(0).getValue(), 
                (String) results.get(1).getValue(), 
                (String) results.get(2).getValue(), 
                (String) results.get(3).getValue()
                );
    }

    public Tuple1<BigInteger> getCheckInOutput(TransactionReceipt transactionReceipt) {
        String data = transactionReceipt.getOutput();
        final Function function = new Function(FUNC_CHECKIN, 
                Arrays.<Type>asList(), 
                Arrays.<TypeReference<?>>asList(new TypeReference<Int256>() {}));
        List<Type> results = FunctionReturnDecoder.decode(data, function.getOutputParameters());
        return new Tuple1<BigInteger>(

                (BigInteger) results.get(0).getValue()
                );
    }

    public TransactionReceipt getAllRecords(String studentId) {
        final Function function = new Function(
                FUNC_GETALLRECORDS, 
                Arrays.<Type>asList(new org.fisco.bcos.sdk.abi.datatypes.Utf8String(studentId)), 
                Collections.<TypeReference<?>>emptyList());
        return executeTransaction(function);
    }

    public byte[] getAllRecords(String studentId, TransactionCallback callback) {
        final Function function = new Function(
                FUNC_GETALLRECORDS, 
                Arrays.<Type>asList(new org.fisco.bcos.sdk.abi.datatypes.Utf8String(studentId)), 
                Collections.<TypeReference<?>>emptyList());
        return asyncExecuteTransaction(function, callback);
    }

    public String getSignedTransactionForGetAllRecords(String studentId) {
        final Function function = new Function(
                FUNC_GETALLRECORDS, 
                Arrays.<Type>asList(new org.fisco.bcos.sdk.abi.datatypes.Utf8String(studentId)), 
                Collections.<TypeReference<?>>emptyList());
        return createSignedTransaction(function);
    }

    public Tuple1<String> getGetAllRecordsInput(TransactionReceipt transactionReceipt) {
        String data = transactionReceipt.getInput().substring(10);
        final Function function = new Function(FUNC_GETALLRECORDS, 
                Arrays.<Type>asList(), 
                Arrays.<TypeReference<?>>asList(new TypeReference<Utf8String>() {}));
        List<Type> results = FunctionReturnDecoder.decode(data, function.getOutputParameters());
        return new Tuple1<String>(

                (String) results.get(0).getValue()
                );
    }

    public Tuple6<List<String>, List<String>, List<String>, List<BigInteger>, List<BigInteger>, List<String>> getGetAllRecordsOutput(TransactionReceipt transactionReceipt) {
        String data = transactionReceipt.getOutput();
        final Function function = new Function(FUNC_GETALLRECORDS, 
                Arrays.<Type>asList(), 
                Arrays.<TypeReference<?>>asList(new TypeReference<DynamicArray<Utf8String>>() {}, new TypeReference<DynamicArray<Utf8String>>() {}, new TypeReference<DynamicArray<Utf8String>>() {}, new TypeReference<DynamicArray<Uint256>>() {}, new TypeReference<DynamicArray<Uint256>>() {}, new TypeReference<DynamicArray<Utf8String>>() {}));
        List<Type> results = FunctionReturnDecoder.decode(data, function.getOutputParameters());
        return new Tuple6<List<String>, List<String>, List<String>, List<BigInteger>, List<BigInteger>, List<String>>(

                convertToNative((List<Utf8String>) results.get(0).getValue()), 
                convertToNative((List<Utf8String>) results.get(1).getValue()), 
                convertToNative((List<Utf8String>) results.get(2).getValue()), 
                convertToNative((List<Uint256>) results.get(3).getValue()), 
                convertToNative((List<Uint256>) results.get(4).getValue()), 
                convertToNative((List<Utf8String>) results.get(5).getValue())
                );
    }

    public TransactionReceipt getRecords(String studentId) {
        final Function function = new Function(
                FUNC_GETRECORDS, 
                Arrays.<Type>asList(new org.fisco.bcos.sdk.abi.datatypes.Utf8String(studentId)), 
                Collections.<TypeReference<?>>emptyList());
        return executeTransaction(function);
    }

    public byte[] getRecords(String studentId, TransactionCallback callback) {
        final Function function = new Function(
                FUNC_GETRECORDS, 
                Arrays.<Type>asList(new org.fisco.bcos.sdk.abi.datatypes.Utf8String(studentId)), 
                Collections.<TypeReference<?>>emptyList());
        return asyncExecuteTransaction(function, callback);
    }

    public String getSignedTransactionForGetRecords(String studentId) {
        final Function function = new Function(
                FUNC_GETRECORDS, 
                Arrays.<Type>asList(new org.fisco.bcos.sdk.abi.datatypes.Utf8String(studentId)), 
                Collections.<TypeReference<?>>emptyList());
        return createSignedTransaction(function);
    }

    public Tuple1<String> getGetRecordsInput(TransactionReceipt transactionReceipt) {
        String data = transactionReceipt.getInput().substring(10);
        final Function function = new Function(FUNC_GETRECORDS, 
                Arrays.<Type>asList(), 
                Arrays.<TypeReference<?>>asList(new TypeReference<Utf8String>() {}));
        List<Type> results = FunctionReturnDecoder.decode(data, function.getOutputParameters());
        return new Tuple1<String>(

                (String) results.get(0).getValue()
                );
    }

    public Tuple6<String, String, String, BigInteger, BigInteger, String> getGetRecordsOutput(TransactionReceipt transactionReceipt) {
        String data = transactionReceipt.getOutput();
        final Function function = new Function(FUNC_GETRECORDS, 
                Arrays.<Type>asList(), 
                Arrays.<TypeReference<?>>asList(new TypeReference<Utf8String>() {}, new TypeReference<Utf8String>() {}, new TypeReference<Utf8String>() {}, new TypeReference<Uint256>() {}, new TypeReference<Uint256>() {}, new TypeReference<Utf8String>() {}));
        List<Type> results = FunctionReturnDecoder.decode(data, function.getOutputParameters());
        return new Tuple6<String, String, String, BigInteger, BigInteger, String>(

                (String) results.get(0).getValue(), 
                (String) results.get(1).getValue(), 
                (String) results.get(2).getValue(), 
                (BigInteger) results.get(3).getValue(), 
                (BigInteger) results.get(4).getValue(), 
                (String) results.get(5).getValue()
                );
    }

    public TransactionReceipt checkOut(String studentId, String reason) {
        final Function function = new Function(
                FUNC_CHECKOUT, 
                Arrays.<Type>asList(new org.fisco.bcos.sdk.abi.datatypes.Utf8String(studentId), 
                new org.fisco.bcos.sdk.abi.datatypes.Utf8String(reason)), 
                Collections.<TypeReference<?>>emptyList());
        return executeTransaction(function);
    }

    public byte[] checkOut(String studentId, String reason, TransactionCallback callback) {
        final Function function = new Function(
                FUNC_CHECKOUT, 
                Arrays.<Type>asList(new org.fisco.bcos.sdk.abi.datatypes.Utf8String(studentId), 
                new org.fisco.bcos.sdk.abi.datatypes.Utf8String(reason)), 
                Collections.<TypeReference<?>>emptyList());
        return asyncExecuteTransaction(function, callback);
    }

    public String getSignedTransactionForCheckOut(String studentId, String reason) {
        final Function function = new Function(
                FUNC_CHECKOUT, 
                Arrays.<Type>asList(new org.fisco.bcos.sdk.abi.datatypes.Utf8String(studentId), 
                new org.fisco.bcos.sdk.abi.datatypes.Utf8String(reason)), 
                Collections.<TypeReference<?>>emptyList());
        return createSignedTransaction(function);
    }

    public Tuple2<String, String> getCheckOutInput(TransactionReceipt transactionReceipt) {
        String data = transactionReceipt.getInput().substring(10);
        final Function function = new Function(FUNC_CHECKOUT, 
                Arrays.<Type>asList(), 
                Arrays.<TypeReference<?>>asList(new TypeReference<Utf8String>() {}, new TypeReference<Utf8String>() {}));
        List<Type> results = FunctionReturnDecoder.decode(data, function.getOutputParameters());
        return new Tuple2<String, String>(

                (String) results.get(0).getValue(), 
                (String) results.get(1).getValue()
                );
    }

    public Tuple1<BigInteger> getCheckOutOutput(TransactionReceipt transactionReceipt) {
        String data = transactionReceipt.getOutput();
        final Function function = new Function(FUNC_CHECKOUT, 
                Arrays.<Type>asList(), 
                Arrays.<TypeReference<?>>asList(new TypeReference<Int256>() {}));
        List<Type> results = FunctionReturnDecoder.decode(data, function.getOutputParameters());
        return new Tuple1<BigInteger>(

                (BigInteger) results.get(0).getValue()
                );
    }

    public List<CreateResultEventResponse> getCreateResultEvents(TransactionReceipt transactionReceipt) {
        List<Contract.EventValuesWithLog> valueList = extractEventParametersWithLog(CREATERESULT_EVENT, transactionReceipt);
        ArrayList<CreateResultEventResponse> responses = new ArrayList<CreateResultEventResponse>(valueList.size());
        for (Contract.EventValuesWithLog eventValues : valueList) {
            CreateResultEventResponse typedResponse = new CreateResultEventResponse();
            typedResponse.log = eventValues.getLog();
            typedResponse.count = (BigInteger) eventValues.getNonIndexedValues().get(0).getValue();
            responses.add(typedResponse);
        }
        return responses;
    }

    public void subscribeCreateResultEvent(String fromBlock, String toBlock, List<String> otherTopics, EventCallback callback) {
        String topic0 = eventEncoder.encode(CREATERESULT_EVENT);
        subscribeEvent(ABI,BINARY,topic0,fromBlock,toBlock,otherTopics,callback);
    }

    public void subscribeCreateResultEvent(EventCallback callback) {
        String topic0 = eventEncoder.encode(CREATERESULT_EVENT);
        subscribeEvent(ABI,BINARY,topic0,callback);
    }

    public List<InsertResultEventResponse> getInsertResultEvents(TransactionReceipt transactionReceipt) {
        List<Contract.EventValuesWithLog> valueList = extractEventParametersWithLog(INSERTRESULT_EVENT, transactionReceipt);
        ArrayList<InsertResultEventResponse> responses = new ArrayList<InsertResultEventResponse>(valueList.size());
        for (Contract.EventValuesWithLog eventValues : valueList) {
            InsertResultEventResponse typedResponse = new InsertResultEventResponse();
            typedResponse.log = eventValues.getLog();
            typedResponse.count = (BigInteger) eventValues.getNonIndexedValues().get(0).getValue();
            responses.add(typedResponse);
        }
        return responses;
    }

    public void subscribeInsertResultEvent(String fromBlock, String toBlock, List<String> otherTopics, EventCallback callback) {
        String topic0 = eventEncoder.encode(INSERTRESULT_EVENT);
        subscribeEvent(ABI,BINARY,topic0,fromBlock,toBlock,otherTopics,callback);
    }

    public void subscribeInsertResultEvent(EventCallback callback) {
        String topic0 = eventEncoder.encode(INSERTRESULT_EVENT);
        subscribeEvent(ABI,BINARY,topic0,callback);
    }

    public List<UpdateResultEventResponse> getUpdateResultEvents(TransactionReceipt transactionReceipt) {
        List<Contract.EventValuesWithLog> valueList = extractEventParametersWithLog(UPDATERESULT_EVENT, transactionReceipt);
        ArrayList<UpdateResultEventResponse> responses = new ArrayList<UpdateResultEventResponse>(valueList.size());
        for (Contract.EventValuesWithLog eventValues : valueList) {
            UpdateResultEventResponse typedResponse = new UpdateResultEventResponse();
            typedResponse.log = eventValues.getLog();
            typedResponse.count = (BigInteger) eventValues.getNonIndexedValues().get(0).getValue();
            responses.add(typedResponse);
        }
        return responses;
    }

    public void subscribeUpdateResultEvent(String fromBlock, String toBlock, List<String> otherTopics, EventCallback callback) {
        String topic0 = eventEncoder.encode(UPDATERESULT_EVENT);
        subscribeEvent(ABI,BINARY,topic0,fromBlock,toBlock,otherTopics,callback);
    }

    public void subscribeUpdateResultEvent(EventCallback callback) {
        String topic0 = eventEncoder.encode(UPDATERESULT_EVENT);
        subscribeEvent(ABI,BINARY,topic0,callback);
    }

    public List<RemoveResultEventResponse> getRemoveResultEvents(TransactionReceipt transactionReceipt) {
        List<Contract.EventValuesWithLog> valueList = extractEventParametersWithLog(REMOVERESULT_EVENT, transactionReceipt);
        ArrayList<RemoveResultEventResponse> responses = new ArrayList<RemoveResultEventResponse>(valueList.size());
        for (Contract.EventValuesWithLog eventValues : valueList) {
            RemoveResultEventResponse typedResponse = new RemoveResultEventResponse();
            typedResponse.log = eventValues.getLog();
            typedResponse.count = (BigInteger) eventValues.getNonIndexedValues().get(0).getValue();
            responses.add(typedResponse);
        }
        return responses;
    }

    public void subscribeRemoveResultEvent(String fromBlock, String toBlock, List<String> otherTopics, EventCallback callback) {
        String topic0 = eventEncoder.encode(REMOVERESULT_EVENT);
        subscribeEvent(ABI,BINARY,topic0,fromBlock,toBlock,otherTopics,callback);
    }

    public void subscribeRemoveResultEvent(EventCallback callback) {
        String topic0 = eventEncoder.encode(REMOVERESULT_EVENT);
        subscribeEvent(ABI,BINARY,topic0,callback);
    }

    public List<CheckOutEventEventResponse> getCheckOutEventEvents(TransactionReceipt transactionReceipt) {
        List<Contract.EventValuesWithLog> valueList = extractEventParametersWithLog(CHECKOUTEVENT_EVENT, transactionReceipt);
        ArrayList<CheckOutEventEventResponse> responses = new ArrayList<CheckOutEventEventResponse>(valueList.size());
        for (Contract.EventValuesWithLog eventValues : valueList) {
            CheckOutEventEventResponse typedResponse = new CheckOutEventEventResponse();
            typedResponse.log = eventValues.getLog();
            typedResponse.studentId = (String) eventValues.getNonIndexedValues().get(0).getValue();
            typedResponse.dormitoryId = (String) eventValues.getNonIndexedValues().get(1).getValue();
            typedResponse.reason = (String) eventValues.getNonIndexedValues().get(2).getValue();
            responses.add(typedResponse);
        }
        return responses;
    }

    public void subscribeCheckOutEventEvent(String fromBlock, String toBlock, List<String> otherTopics, EventCallback callback) {
        String topic0 = eventEncoder.encode(CHECKOUTEVENT_EVENT);
        subscribeEvent(ABI,BINARY,topic0,fromBlock,toBlock,otherTopics,callback);
    }

    public void subscribeCheckOutEventEvent(EventCallback callback) {
        String topic0 = eventEncoder.encode(CHECKOUTEVENT_EVENT);
        subscribeEvent(ABI,BINARY,topic0,callback);
    }

    public static Record load(String contractAddress, Client client, CryptoKeyPair credential) {
        return new Record(contractAddress, client, credential);
    }

    public static Record deploy(Client client, CryptoKeyPair credential) throws ContractException {
        return deploy(Record.class, client, credential, getBinary(client.getCryptoSuite()), "");
    }

    public static class CreateResultEventResponse {
        public TransactionReceipt.Logs log;

        public BigInteger count;
    }

    public static class InsertResultEventResponse {
        public TransactionReceipt.Logs log;

        public BigInteger count;
    }

    public static class UpdateResultEventResponse {
        public TransactionReceipt.Logs log;

        public BigInteger count;
    }

    public static class RemoveResultEventResponse {
        public TransactionReceipt.Logs log;

        public BigInteger count;
    }

    public static class CheckOutEventEventResponse {
        public TransactionReceipt.Logs log;

        public String studentId;

        public String dormitoryId;

        public String reason;
    }
}
